/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import entidades.EmpleadoImpl;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import persistencia.agente.EmpleadoAgente;

/**
 *
 * @author mariodante
 */
public class IntermediarioEmpleado extends IntermediarioPersistencia {

    @Override
    protected String generarSQLBuscarConCriterio(Criterio criterio) {
        String sql = "SELECT * FROM Empleado WHERE " + criterio.convertirAString();
        System.out.println("SQL Select: " + sql);
        return sql;   
    }

    @Override
    protected String generarSQLBuscarTodo() {
          return "SELECT * FROM EMPLEADO";
    }

    @Override
    protected String generarSQLBuscarXOid(String oid) {
         return "SELECT * FROM EMPLEADO WHERE oidEmpleado = '" + oid +"'";
    }

    @Override
    protected String generarSQLGuardar(Object objeto) {
       EmpleadoAgente ob = (EmpleadoAgente) objeto;
        return  "INSERT INTO EMPLEADO (oidEmpleado, legajo, nombre, "
                + "apellido, oidServicio, disponible, bloqueado) VALUES "
//                , oidServicio
                   + "('"+ ob.getOid()
                //generarOid()
                //ob.getOid() == null || ob.getOid().trim().equals("")? generarOid() : ob.getOid()
                +"', "+ ob.getLegajo()
                +", '"+ ob.getNombre()
                +"', '"+ ob.getApellido()
                +"', '"+ ob.getOidServicio()
                +"', "+ convertirBooleanAInt(ob.isDisponible())
                +", "+ convertirBooleanAInt(ob.isBloqueado())
               +")";
               // +")";
    }

    @Override
    protected String generarSQLActualizar(Object objeto) {
        EmpleadoAgente ob = (EmpleadoAgente) objeto;
        return  "UPDATE EMPLEADO SET "
                + "legajo = " + ob.getLegajo()
                + ", nombre = '" + ob.getNombre() 
                + "', apellido = '" + ob.getApellido() 
                + "', disponible = " +  convertirBooleanAInt(ob.isDisponible())
                + ", bloqueado = " +  convertirBooleanAInt(ob.isBloqueado())
               + ", oidServicio = '" +  ob.getOidServicio() +"'"
                + " WHERE oidEmpleado = '" + ob.getOid() +"'";
    }

    @Override
    protected String generarSQLEliminar(Object objeto) {
      return "DELETE FROM EMPLEADO WHERE oidEmpleado = '" + ((Agente)objeto).getOid() +"'";
    }

    @Override
    protected List<Object> convertirAObjeto(ResultSet result) {
       List<Object> resultado = new ArrayList<Object>();
        EmpleadoImpl implementacion;
        EmpleadoAgente agente;

        try {
            while (result.next()) {
                implementacion = new EmpleadoImpl();
                agente = new EmpleadoAgente();
                agente.setEmpleado(implementacion);
                
                agente.setOid(result.getString("oidEmpleado"));
                agente.setLegajo(result.getInt("legajo"));
                agente.setNombre(result.getString("nombre"));
                agente.setApellido(result.getString("apellido"));
                agente.setDisponible(result.getBoolean("disponible"));
                agente.setBloqueado(result.getBoolean("bloqueado"));
                agente.setOidServicio(result.getString("oidServicio"));
                
              resultado.add(agente);
            }

        } catch (Exception e) {
            System.out.println("Error en materialización: "+ e.toString());
        }    
        
        return resultado;
    }

    @Override
    protected boolean guardarObjetosCompuestos(Object objeto) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
}
